import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';

Widget formLabelText({required String labelText, bool isRequired = false}) {
  return Text.rich(
    TextSpan(
      children: [
        if (isRequired)
          const TextSpan(text: '* ', style: TextStyle(color: Colors.red)),
        TextSpan(text: labelText),
      ],
    ),
  );
}

InputDecoration formInputDecoration({
  required String hintText, // 使用命名参数并标记为必填
  IconData? prefixIcon,
}) {
  return InputDecoration(
    hintText: hintText,
    hintStyle: TextStyle(color: Colors.grey),
    filled: true,
    fillColor: Colors.white,
    border: OutlineInputBorder(),
    prefixIcon: prefixIcon != null ? Icon(prefixIcon) : null,
  );
}

Widget cardContainer(Widget content) {
  return Card(
    elevation: 0,
    color: Colors.white,
    shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
    child: Padding(
      padding: const EdgeInsets.all(10),
      child: content,
    ),
  );
}

/// 圆形图标按钮
Widget circleIconButton({
  required IconData icon,
  required VoidCallback onPressed,
  required BuildContext context,
}) {
  return ElevatedButton(
    onPressed: onPressed,
    style: ElevatedButton.styleFrom(
      fixedSize: Size(32, 32),
      shape: CircleBorder(),
      elevation: 0,
      backgroundColor: Theme.of(context).primaryColor,
      padding: EdgeInsets.zero,
      minimumSize: const Size(0, 0),
    ),
    child: Icon(icon, color: Colors.white, size: 18),
  );
}

/// 确认按钮样式
ButtonStyle primaryButtonStyle() {
  return ButtonStyle(
    backgroundColor: WidgetStateProperty.all(Colors.green),
    shape: WidgetStateProperty.all(
      RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
    ),
  );
}

/// 取消按钮样式
ButtonStyle cancelButtonStyle() {
  return ButtonStyle(
    backgroundColor: WidgetStateProperty.all(Colors.grey),
    shape: WidgetStateProperty.all(
      RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
    ),
  );
}

Text buttonText({required String text}) {
  return Text(text, style: TextStyle(color: Colors.white));
}

/// 图片错误显示
Widget errorImageContainer(double height) {
  return Container(
    height: 200,
    width: double.infinity,
    color: Colors.grey[200],
    child: const Icon(Icons.image, color: Colors.grey, size: 30),
  );
}

/// 成功消息
void showSuccessToast(String message) {
  Fluttertoast.showToast(
    msg: message,
    toastLength: Toast.LENGTH_SHORT,
    gravity: ToastGravity.CENTER,
    timeInSecForIosWeb: 1,
    backgroundColor: Colors.green,
    textColor: Colors.white,
    fontSize: 16.0,
  );
}

/// 错误消息
void showErrorToast(String message) {
  Fluttertoast.showToast(
    msg: message,
    toastLength: Toast.LENGTH_SHORT,
    gravity: ToastGravity.CENTER,
    timeInSecForIosWeb: 1,
    backgroundColor: Colors.red,
    textColor: Colors.white,
    fontSize: 16.0,
  );
}
